/**
 * * 题目名称：删除最外层的括号
 * * 题目地址：https://leetcode-cn.com/problems/remove-outermost-parentheses
 */

/*
题目：
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B，其中 A 和 B 都是有效的括号字符串，+ 代表字符串的连接。例如，""，"()"，"(())()" 和 "(()(()))" 都是有效的括号字符串。

如果有效字符串 S 非空，且不存在将其拆分为 S = A+B 的方法，我们称其为原语（primitive），其中 A 和 B 都是非空有效括号字符串。

给出一个非空有效字符串 S，考虑将其进行原语化分解，使得：S = P_1 + P_2 + ... + P_k，其中 P_i 是有效括号字符串原语。

对 S 进行原语化分解，删除分解中每个原语字符串的最外层括号，返回 S 。

*/

/* 思路：我们解决这道题的关键在于，需要知道哪些是需要去除的外层括号，为了找到这些需要去除的外层括号，我们可以使用到计数器。

规则： 遇到左括号，我们的计数器 +1+1，遇到右括号，我们的计数器 -1−1。

这样的话，一组连续且有效的括号，将不会对计数器的值产生变化。

作者：demigodliu
链接：https://leetcode-cn.com/problems/remove-outermost-parentheses/solution/ji-shu-fa-shan-chu-zui-wai-ceng-de-gua-h-55id/
来源：力扣（LeetCode）
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
*/

var removeOuterParentheses = function(S) {
    let count = 0,str = "";
    for(let i = 0;i<S.length;i++){
        if(S[i]=="("&&count++>0) str+="("
        if(S[i]==")"&&count-->1) str+=")"
    }
    return str;
};




// 测试用例
let test = "(()())(())"

console.time('执行用时');
console.log(removeOuterParentheses(test));
console.timeEnd('执行用时');